﻿using System.Collections.Generic;

namespace DART.Detector.IRay
{
    public class GrayImage : IGrayImage
    {
        /// <summary>
        /// 图像像素宽度。
        /// </summary>
        public int Width { get; set; }

        /// <summary>
        /// 图像像素高度。
        /// </summary>
        public int Height { get; set; }

        /// <summary>
        /// 图像数据。
        /// </summary>
        /// <remarks>长度等于 <see cref="Width"/> * <see cref="Height"/> * <see cref="BytesPerPixel"/>。</remarks>
        public byte[] Data { get; set; }

        /// <summary>
        /// 每像素字节数，缺省为2。
        /// </summary>
        /// <remarks>比如12位灰度图像，一般每个像素会使用4字节存储</remarks>
        public int BytesPerPixel { get; set; } = 2;

        /// <summary>
        /// 每像素位深，缺省为16。
        /// </summary>
        /// <remarks>比如10位深，12位深，14位深，16位深。</remarks>
        public int BitsPerPixel { get; set; } = 16;

        /// <summary>
        /// 附加属性。
        /// </summary>
        public IDictionary<string, object> Tags { get; set; } = new Dictionary<string, object>();
    }

    public interface IGrayImage
    {
        /// <summary>
        /// 图像像素宽度。
        /// </summary>
        int Width { get; }

        /// <summary>
        /// 图像像素高度。
        /// </summary>
        int Height { get; }

        /// <summary>
        /// 图像数据。
        /// </summary>
        /// <remarks>长度等于 <see cref="Width"/> * <see cref="Height"/> * <see cref="BytesPerPixel"/>。</remarks>
        byte[] Data { get; }

        /// <summary>
        /// 每像素字节数。
        /// </summary>
        /// <remarks>比如12位灰度图像，一般每个像素会使用4字节存储</remarks>
        int BytesPerPixel { get; }

        /// <summary>
        /// 每像素位深。
        /// </summary>
        /// <remarks>比如10位深，12位深，14位深，16位深。</remarks>
        int BitsPerPixel { get; }

        /// <summary>
        /// 附加属性。
        /// </summary>
        IDictionary<string,object> Tags { get; }
    }
}